// 封装一个自定义Hooks函数
// 1.复用什么(相同的逻辑代码)
// 2.传入什么(调用时传入的内容)
// 3.返回什么(外面需要使用的)
import { getMemberAddressAPI } from '@/services/address'
import { ref } from "vue"
import { 
  getPayWxPayMiniPayAPI, 
  getPayMockAPI, 
 } from '@/services/order'

// 命名格式要求：use名字
export const useGuessList = () => {
  // ref引用
  const guessRef = ref()
  // 滚动到底
  const onScrolltolower = () => {
    guessRef.value.getMore()
  } 
  return { guessRef, onScrolltolower }
}

export const useAddressList = () => {
  // 定义变量
  const addressList = ref([])
  // 定义方法
  const getMemberAddressData = async () => {
    const { result } = await getMemberAddressAPI()
    addressList.value = result
  }
  return { addressList, getMemberAddressData }
}
// 订单支付
export const useOrderPay = async (orderId) => {
  const isDev = import.meta.env.DEV
  // 生产环境，微信支付【支付】
  // const { result } = await getPayWxPayMiniPayAPI(order.value.id)
  // 调用API，传入后端返回的支付调用加密参数
  // await uni.requestPayment(result)
  // 支付成功就走下面，支付失败，建议使用try-catch捕捉错误
  // 总结一下：支付就是把订单id提交给后端，后端会返回加密API需要的参数，调用支付API
  if (isDev) {
    // 开发环境，模拟支付
    await getPayMockAPI(orderId)
  } else {
    // 生产环境，微信支付 【上班】
    const { result } = await getPayWxPayMiniPayAPI(orderId)
    // 调用支付API，传入后端返回的支付调用加密参数
    await uni.requestPayment(result)
  }
}